package com.ky.server.dao;

import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.ky.common.entity.KyFile;
import com.ky.server.util.ConfigConstants;
import com.ky.server.util.propertiesUtil;

public class FileDao {

	private static HashMap<Long, KyFile> fileMap=new HashMap<>();
	private static Document document;
	private static String xmlPath=propertiesUtil.getProperty(ConfigConstants.SERVER_FILES_PATH_KEY);
	
	static {
		SAXReader saxReader = new SAXReader();
		try {
			document = saxReader.read(xmlPath);
			Element rootElement = document.getRootElement();
			List<Element> fileElements = rootElement.elements();
			for (Element fileElement : fileElements) {
				Long id =Long.parseLong(fileElement.attributeValue("id")) ;//将id转换成long型的
				String name = fileElement.elementTextTrim("name");//获取名为name的子元素的文本内容
				double size=Double.parseDouble(fileElement.elementTextTrim("size"));
				String path = fileElement.elementTextTrim("path");
				fileMap.put(id, new KyFile(id, name, size, path));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	//查询并返回全部的文件
	public static KyFile[] getFileList() {
		Collection<KyFile> files=fileMap.values();
		return files.toArray(new KyFile[] {});//将集合转为数组类型
	}
	
	//通过id查询并返回一个要下载的文件
	public static byte[] getFileById(Long id) {
		//根据传入的id寻找文件
		KyFile kyFile =fileMap.get(id);
		//根据文件找路径
		String path = kyFile.getPath();
		//根据路径创建file对象
		File destFile = new File(path);
		//判断文件是否存在
		if(!destFile.exists()) {
			return null;
		}
		try {
			byte[]  bs= FileUtils.readFileToByteArray(destFile);//FileUtils 将文件读成字节数组
			return bs;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
}
